﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication3
{
    public partial class Consulta_Libros : Form
    {
        DataSet ds;
        string rutaBDBiblioteca = "Data Source=JOHANA-PC;Initial Catalog=Biblioteca;Integrated Security=True";
        
        public Consulta_Libros()
        {
            InitializeComponent();
        }

        private void Consulta_Libros_Load(object sender, EventArgs e)
        {
            string ConsultaSQLLibros = "Select * From Libros Order By Cod_Lib";
            ds = new DataSet();

            AgregarTablaDataSetSQLServer(rutaBDBiblioteca, ConsultaSQLLibros, "Libros", ref ds);

            Grilla_Lib.DataSource = ds.Tables["Libros"];
            TitulosColumnas();

            CargarComboTexto(ref CbCod_Lib);
            CargarComboTexto(ref CbTit_Lib);
            CargarComboNumerico(ref CbNum_Pag);
        }

        private void TitulosColumnas()
        {
            Grilla_Lib.Columns["Cod_Lib"].HeaderText = "CODIGO";
            Grilla_Lib.Columns["Isbn"].HeaderText = " ISBN";
            Grilla_Lib.Columns["Tit_Lib"].HeaderText = "TITULO LIBRO";
            Grilla_Lib.Columns["Cod_Cat"].HeaderText = "CODIGO CATEGORIA";
            Grilla_Lib.Columns["Cod_Edit"].HeaderText = " CODIGO EDITORIAL";
            Grilla_Lib.Columns["Idioma_orig"].HeaderText = " IDIOMA ORIGINAL";
            Grilla_Lib.Columns["Idioma_Lib"].HeaderText = "IDIOMA LIBRO";
            Grilla_Lib.Columns["Año_Edic"].HeaderText = " ANO EDICION";
            Grilla_Lib.Columns["Num_Edic"].HeaderText = " NUMERO EDICION";
            Grilla_Lib.Columns["Año_Ing"].HeaderText = "AÑO INGRESO";
            Grilla_Lib.Columns["Num_Pag"].HeaderText = " NUMERO PAGINAS";
            Grilla_Lib.Columns["Cant_Lib"].HeaderText = "CANTIDAD";
            Grilla_Lib.Columns["Est_Lib"].HeaderText = "ESTADO";
        }


        private void AgregarTablaDataSetSQLServer(string ConexionBD, string ConsultaSQL, string NombreTabla, ref DataSet ds)
        {
            SqlConnection cn = new SqlConnection(ConexionBD);
            SqlDataAdapter adaptador = new SqlDataAdapter(ConsultaSQL, cn);
            cn.Open();
            adaptador.Fill(ds, NombreTabla);
        }


        private void CargarComboTexto(ref ComboBox NombreCombo)
        {
            NombreCombo.Items.Add("Comienza con:");
            NombreCombo.Items.Add("Es igual a:");
        }

        private void CargarComboNumerico(ref ComboBox NombreCombo)
        {
            NombreCombo.Items.Add("Igual a:");
            NombreCombo.Items.Add("Mayor a:");
            NombreCombo.Items.Add("Menor a:");
        }


        private void ConstruirClausulaSQL(string NombreCampo, string Operador, string Valor, ref string Clausula)
        {
            string d1 = "";
            string d2 = "";
            if (Clausula == "")
                Clausula = Clausula + " WHERE ";
            else
                Clausula = Clausula + " AND ";

            switch (Operador)
            {
                case "Igual a:":
                    d1 = " = ";
                    d2 = "";
                    break;
                case "Mayor a:":
                    d1 = " > ";
                    d2 = "";
                    break;
                case "Menor a:":
                    d1 = " < ";
                    d2 = "";
                    break;
                case "Comienza con:":
                    d1 = " LIKE '";
                    d2 = "%'";
                    break;
                case "Es igual a:":
                    d1 = " ='";
                    d2 = "'";
                    break;
            }
            Clausula =
                Clausula + NombreCampo + d1 + Valor + d2;
        } 


        private void BtnQuitar_Click(object sender, EventArgs e)
        {
            ds.Tables.Clear();
            AgregarTablaDataSetSQLServer(rutaBDBiblioteca, "Select * From Libros Order By Cod_Lib", "Libros", ref ds);
            Grilla_Lib.DataSource = ds.Tables["Libros"];
            TitulosColumnas();

            CbCod_Lib.Text = "";
            CbTit_Lib.Text = "";
            CbNum_Pag.Text = "";
            TxtCod_Lib.Text = "";
            TxtTit_Lib.Text = "";
            TxtNum_Pag.Text = ""; 
        }

        private void BtnBuscar_Click(object sender, EventArgs e)
        {
            string ClausulaSQLLibros = "";
            if (CbCod_Lib.Text != "" && TxtCod_Lib.Text != "")
                ConstruirClausulaSQL("Cod_Lib",
                                     CbCod_Lib.Text,
                                     TxtCod_Lib.Text,
                                     ref ClausulaSQLLibros);
            if (CbTit_Lib.Text != "" && TxtTit_Lib.Text != "")
                ConstruirClausulaSQL("Tit_Lib",
                                     CbTit_Lib.Text,
                                     TxtTit_Lib.Text,
                                     ref ClausulaSQLLibros);
            if (CbNum_Pag.Text != "" && TxtNum_Pag.Text != "")
                ConstruirClausulaSQL("Num_Pag",
                                     CbNum_Pag.Text,
                                     TxtNum_Pag.Text,
                                     ref ClausulaSQLLibros);
            ds.Tables.Clear();
            AgregarTablaDataSetSQLServer(rutaBDBiblioteca, "Select * From Libros" + ClausulaSQLLibros, "Consulta", ref ds);
            Grilla_Lib.DataSource = ds.Tables["Consulta"];
        }

        private void BtnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

    }
}
